package top.zhdev.community.service;

import org.springframework.security.core.GrantedAuthority;
import top.zhdev.community.entity.LoginTicket;
import top.zhdev.community.entity.User;


import java.util.Collection;
import java.util.Map;

public interface UserService{
    Map<String,Object> login(String username,String password,int expiredSeconds);

    /**
     * 根据用户id获取用户信息
     * @param userId
     * @return
     */
    User getUserById(Integer userId);

    /**
     * 获取登录凭证
     * @param ticket
     * @return
     */
    LoginTicket getLoginTicket(String ticket);

    Collection<? extends GrantedAuthority> getAuthorities(Integer id);

    /**
     * 退出登录
     * @param ticket
     */
    void logout(String ticket);

    /**
     * 用户注册
     * @param user
     * @return
     */
    Map<String, Object> register(User user);

    /**
     * 激活用户
     * @param userId
     * @param code
     * @return
     */
    int activation(int userId, String code);

    /**
     * 查询指定用户的帖子数量
     * @param userId
     * @return
     */
    int getDiscussPostsByUserId(int userId);

    /**
     * 更新用户头像
     * @param id
     * @param url
     */
    int updateHeaderUrl(Integer id, String url);

    /**
     * 通过昵称查找用户
     * @param toName
     * @return
     */
    User getUserByName(String toName);
}
